const isProduction = process.env.NODE_ENV !== 'development';
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const CompressionPlugin = require('compression-webpack-plugin');
module.exports = {
  pages: {
    index: {
      entry: 'src/main.js',
      template: 'public/index.html',
      filename: 'index.html',
      title: 'vue积累',
    },
  },
  // 将插件打包
  transpileDependencies: [
    "vue-scroll-animate"
  ],
  // 配置webpack功能
  configureWebpack: config => {
    if (isProduction) {
      // 代码压缩去掉输出
      config.plugins.push(
        new UglifyJsPlugin({
          uglifyOptions: {
            //生产环境自动删除console,debug
            compress: {
              drop_debugger: true,
              drop_console: true,
              pure_funcs: ['console.log']
            }
          },
          sourceMap: false, //打包不生成.map文件
          parallel: true // 优化打包速度开启并发打包
        })
      );
      // gzip压缩
      config.plugins.push(
        new CompressionPlugin({
          test: /\.js$|\.html$|\.css/,
          threshold: 10240, //10k压缩
          deleteOriginalAssets: false // 不删除源文件
        })
      );
    }
  },
  // 替换webpack配置
  chainWebpack: config => {
    // svg配置
    // const svgRule = config.module.rule("svg");
    // svgRule.uses.clear();
    // svgRule
    //   .use("svg-sprite-loader")
    //   .loader("svg-sprite-loader")
    //   .options({
    //     symbolId: "icon-[name]"
    //   });
    // 打包分析工具使用时执行 npm run build --report
    if (isProduction) {
      if (process.env.npm_config_report) {
        config
          .plugin('webpack-bundle-analyzer')
          .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
          .end();
      }

    }
    /// 图片打包之后不转base64 
    config.module
      .rule('images')
      .use('url-loader')
      .loader('url-loader')
      .tap(options => Object.assign(options, { limit: 200 }));
  },
  devServer: {
    open: true, // 自动开启浏览器
  },
}
